package br.com.churrascariabrasadeouro.persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import br.com.churrascariabrasadeouro.Principal;
import br.com.churrascariabrasadeouro.negocio.Produto;

public class ProdutoDAO {

	public Integer inserirProduto(Produto produto){
		try {
			Connection conexao = Principal.banco.obterConexao();
			PreparedStatement ps = conexao.prepareStatement("insert into produto " +
					"(DESCRICAO,VALOR,DATAHORA) values (?,?,?)");
			
			ps.setString(1, produto.getDescricao());
			ps.setDouble(2, produto.getValor());
			ps.setDate(3, new java.sql.Date(new Date().getTime()));
			System.out.println(" "+produto);
			ps.execute();
			conexao.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
		
	}
	
	
	public Integer excluirProduto(Integer id){
		try {
			Connection conexao = Principal.banco.obterConexao();
			PreparedStatement ps = conexao.prepareStatement("DELETE FROM PRODUTO WHERE ID=?");
			ps.setInt(1, id);
			ps.execute();
			conexao.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return id;
	}
	
	public ArrayList<Produto> listarTodosProduto(){
		ArrayList<Produto> produtos = new ArrayList<Produto>();
		try {
			Connection conexao = Principal.banco.obterConexao();
			Statement stmt = conexao.createStatement();
			ResultSet rs = stmt.executeQuery("Select ID,DESCRICAO,VALOR FROM PRODUTO");
			while(rs.next()){
				Produto produto = new Produto();
				produto.setId(rs.getInt(1));
				produto.setDescricao(rs.getString(2));
				produto.setValor(rs.getDouble(3));
				produtos.add(produto);
			}
			conexao.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		System.out.println(" "+produtos.size());
		return produtos;
	}


	public void alterarProduto(Produto produto) {
		try {
			Connection conexao = Principal.banco.obterConexao();
			PreparedStatement ps = conexao.prepareStatement("UPDATE PRODUTO SET DESCRICAO=?, VALOR=?, DATAHORA=? " +
					"WHERE ID=?");
			ps.setString(1, produto.getDescricao());
			ps.setDouble(2, produto.getValor());
			ps.setDate(3, new java.sql.Date(new Date().getTime()));
			ps.setInt(4, produto.getId());
			ps.execute();
			conexao.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}


	public Produto obterProduto(String descricao) {
		Connection conexao;
		Produto p = null;
		try {
			conexao = Principal.banco.obterConexao();
			PreparedStatement ps = conexao.prepareStatement("SELECT ID,DESCRICAO,VALOR FROM PRODUTO WHERE DESCRICAO = ?");
			ps.setString(1, descricao);
			ResultSet cursor = ps.executeQuery();
            if(cursor.next()){
            	p = new Produto();
            	p.setId(cursor.getInt(1));
            	p.setDescricao(cursor.getString(2));
            	p.setValor(cursor.getDouble(3));
            }
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return p;
	}
		
	
	
	
	
}
